/**
 * 购物车工具函数
 */

// 计算购物车总价
export function calculateTotal(cartItems) {
  return cartItems.reduce((total, item) => {
    if (item.selected) {
      return total + (item.price * item.quantity);
    }
    return total;
  }, 0).toFixed(2);
}

// 计算购物车商品总数
export function calculateTotalQuantity(cartItems) {
  return cartItems.reduce((total, item) => {
    return total + item.quantity;
  }, 0);
}

// 检查购物车是否为空
export function isCartEmpty(cartItems) {
  return cartItems.length === 0;
}

// 获取选中的商品
export function getSelectedItems(cartItems) {
  return cartItems.filter(item => item.selected);
}

// 全选/取消全选
export function toggleSelectAll(cartItems, selected) {
  return cartItems.map(item => ({
    ...item,
    selected: selected
  }));
}

// 添加商品到购物车
export function addToCart(cartItems, newItem) {
  const existingItem = cartItems.find(item => item.id === newItem.id);
  
  if (existingItem) {
    // 如果商品已存在，增加数量
    return cartItems.map(item => 
      item.id === newItem.id 
        ? { ...item, quantity: item.quantity + 1 }
        : item
    );
  } else {
    // 如果商品不存在，添加新商品
    return [...cartItems, { ...newItem, quantity: 1, selected: true }];
  }
}

// 从购物车移除商品
export function removeFromCart(cartItems, itemId) {
  return cartItems.filter(item => item.id !== itemId);
}

// 更新商品数量
export function updateItemQuantity(cartItems, itemId, quantity) {
  if (quantity <= 0) {
    return removeFromCart(cartItems, itemId);
  }
  
  return cartItems.map(item => 
    item.id === itemId 
      ? { ...item, quantity: quantity }
      : item
  );
}

// 切换商品选择状态
export function toggleItemSelection(cartItems, itemId) {
  return cartItems.map(item => 
    item.id === itemId 
      ? { ...item, selected: !item.selected }
      : item
  );
}

// 格式化价格显示
export function formatPrice(price) {
  return `¥${parseFloat(price).toFixed(2)}`;
}

// 检查是否达到免运费条件
export function checkFreeShipping(total, threshold = 15) {
  return total >= threshold;
}

// 计算运费
export function calculateShipping(total, threshold = 15, shippingFee = 5) {
  return checkFreeShipping(total, threshold) ? 0 : shippingFee;
}

// 获取推荐商品
export function getRecommendItems(currentCartItems, allProducts, limit = 6) {
  // 简单的推荐逻辑：排除已在购物车中的商品
  const cartItemIds = currentCartItems.map(item => item.id);
  return allProducts
    .filter(product => !cartItemIds.includes(product.id))
    .slice(0, limit);
}

// 购物车数据持久化
export function saveCartToStorage(cartItems) {
  try {
    uni.setStorageSync('cart_items', JSON.stringify(cartItems));
  } catch (e) {
    console.error('保存购物车数据失败:', e);
  }
}

// 从存储中读取购物车数据
export function loadCartFromStorage() {
  try {
    const cartData = uni.getStorageSync('cart_items');
    return cartData ? JSON.parse(cartData) : [];
  } catch (e) {
    console.error('读取购物车数据失败:', e);
    return [];
  }
}

// 清空购物车
export function clearCart() {
  try {
    uni.removeStorageSync('cart_items');
  } catch (e) {
    console.error('清空购物车失败:', e);
  }
}

// 显示购物车提示
export function showCartToast(message, type = 'none') {
  uni.showToast({
    title: message,
    icon: type,
    duration: 2000
  });
}

// 显示确认对话框
export function showConfirmDialog(title, content) {
  return new Promise((resolve) => {
    uni.showModal({
      title: title,
      content: content,
      success: (res) => {
        resolve(res.confirm);
      },
      fail: () => {
        resolve(false);
      }
    });
  });
} 